package com.oracle.oa.dao;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;

import com.oracle.oa.util.PageBean;
import com.oracle.oa.util.PageBean2;

public interface BaseDao {
	/**
	 * 根据类型查询所有
	 * @param clzz
	 * @return
	 */
	public List getAll(Class clzz);
	
	/**
	 *根据类型和id查找单个对象 
	 * @param clzz
	 * @param id
	 * @return
	 */
	public Object getById(Class clzz,java.io.Serializable id);
	
	public Object getById(Class clzz,Long id);
	
	/**
	 * 根据条件查找用户集合
	 * @param clzz
	 * @param propertyName
	 * @param propertyValue
	 * @return
	 */
	public List getByProperty(Class clzz,String propertyName,Object propertyValue);

	/**
	 * 根据hql查询所有
	 * @param sql
	 * @return
	 */
	public List getAllByHQL(String sql);
	
	/**
	 * DetachedCriteria方式查询
	 * @param dc
	 * @return
	 */
	public List getAllByDetachedCriteria(DetachedCriteria dc);
	
	/**
	 * 增加
	 * @param obj
	 */
	public void save(Object obj);
	
	/**
	 * 根据对象更新
	 * @param obj
	 */
	public void update(Object obj);
	
	/**
	 * 根据对象删除
	 * @param obj
	 */
	public void delete(Object obj);
	/**
	 * 普通分页（不带条件）
	 * @param pb
	 * @param dc
	 * @param clz
	 */
	public void splitPage1(PageBean pb, DetachedCriteria dc, Class clz);
	
	//分页zhk
	public void fenye(DetachedCriteria dc,PageBean2 pb,Class clz);
	
}
